{
 "cells":[
  {
   "cell_type":"code",
   "source":[
    "import pylab as pl\n",
    "import numpy as np\n",
    "import math"
   ],
   "execution_count":28,
   "outputs":[
    
   ],
   "metadata":{
    "datalore":{
     "type":"CODE",
     "hide_input_from_viewers":false,
     "hide_output_from_viewers":false
    }
   }
  },
  {
   "cell_type":"code",
   "source":[
    "h = 0.01\n",
    "n = int(1 \/ h)\n",
    "f = lambda x, y: -50 * y + 50 * x ** 2 + 2 * x"
   ],
   "execution_count":29,
   "outputs":[
    
   ],
   "metadata":{
    "datalore":{
     "type":"CODE",
     "hide_input_from_viewers":false,
     "hide_output_from_viewers":false
    }
   }
  },
  {
   "cell_type":"code",
   "source":[
    "def E(f, x0, y0, h, N):\n",
    "    x = np.zeros(N + 1)\n",
    "    y = np.zeros(N + 1)\n",
    "    x[0] = x0\n",
    "    y[0] = y0\n",
    "    for i in range(N):\n",
    "        x[i + 1] = x[i] + h\n",
    "        y[i + 1] = y[i] + h * f(x[i], y[i])\n",
    "    return x, y"
   ],
   "execution_count":30,
   "outputs":[
    
   ],
   "metadata":{
    "datalore":{
     "type":"CODE",
     "hide_input_from_viewers":false,
     "hide_output_from_viewers":false
    }
   }
  },
  {
   "cell_type":"code",
   "source":[
    "def E_r(f, x0, y0, h, N):\n",
    "    x = np.zeros(N + 1)\n",
    "    y = np.zeros(N + 1)\n",
    "    x[0] = x0\n",
    "    y[0] = y0\n",
    "    for i in range(N):\n",
    "        x[i + 1] = x[i] + h\n",
    "        y_b = y[i] + h * f(x[i], y[i])\n",
    "        y[i + 1] = y[i] + h \/ 2 * (f(x[i], y[i]) + f(x[i + 1], y_b))\n",
    "    return x, y"
   ],
   "execution_count":31,
   "outputs":[
    
   ],
   "metadata":{
    "datalore":{
     "type":"CODE",
     "hide_input_from_viewers":false,
     "hide_output_from_viewers":false
    }
   }
  },
  {
   "cell_type":"code",
   "source":[
    "def R_k(f, x0, y0, h, N):\n",
    "    x = np.zeros(N + 1)\n",
    "    y = np.zeros(N + 1)\n",
    "    x[0] = x0\n",
    "    y[0] = y0\n",
    "    for i in range(N):\n",
    "        x[i + 1] = x[i] + h\n",
    "        k1 = f(x[i], y[i])\n",
    "        k2 = f(x[i] + h \/ 2, y[i] + h \/ 2 * k1)\n",
    "        k3 = f(x[i] + h \/ 2, y[i] + h \/ 2 * k2)\n",
    "        k4 = f(x[i] + h, y[i] + h * k3)\n",
    "        y[i + 1] = y[i] + h \/ 6 * (k1 + k2 * 2 + k3 * 2 + k4)\n",
    "    return x, y"
   ],
   "execution_count":34,
   "outputs":[
    
   ],
   "metadata":{
    "datalore":{
     "type":"CODE",
     "hide_input_from_viewers":false,
     "hide_output_from_viewers":false
    }
   }
  },
  {
   "cell_type":"code",
   "source":[
    "[xx, yy] = E(f, 0, 1 \/ 3, h, n)\n",
    "print(xx)\n",
    "print(yy)\n",
    "[xx_r, yy_r] = E_r(f, 0, 1 \/ 3, h, n)\n",
    "print(yy_r)\n",
    "[xx_R_k, yy_R_k] = R_k(f, 0, 1 \/ 3, h, n)"
   ],
   "execution_count":35,
   "outputs":[
    {
     "name":"stdout",
     "text":[
      "[0.   0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1  0.11 0.12 0.13\n",
      " 0.14 0.15 0.16 0.17 0.18 0.19 0.2  0.21 0.22 0.23 0.24 0.25 0.26 0.27\n",
      " 0.28 0.29 0.3  0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4  0.41\n",
      " 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5  0.51 0.52 0.53 0.54 0.55\n",
      " 0.56 0.57 0.58 0.59 0.6  0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69\n",
      " 0.7  0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8  0.81 0.82 0.83\n",
      " 0.84 0.85 0.86 0.87 0.88 0.89 0.9  0.91 0.92 0.93 0.94 0.95 0.96 0.97\n",
      " 0.98 0.99 1.  ]\n",
      "[0.33333333 0.16666667 0.08358333 0.04239167 0.02224583 0.01272292\n",
      " 0.00861146 0.00730573 0.00750286 0.00855143 0.01012572 0.01206286\n",
      " 0.01428143 0.01674071 0.01942036 0.02231018 0.02540509 0.02870254\n",
      " 0.03220127 0.03590064 0.03980032 0.04390016 0.04820008 0.05270004\n",
      " 0.05740002 0.06230001 0.0674     0.0727     0.0782     0.0839\n",
      " 0.0898     0.0959     0.1022     0.1087     0.1154     0.1223\n",
      " 0.1294     0.1367     0.1442     0.1519     0.1598     0.1679\n",
      " 0.1762     0.1847     0.1934     0.2023     0.2114     0.2207\n",
      " 0.2302     0.2399     0.2498     0.2599     0.2702     0.2807\n",
      " 0.2914     0.3023     0.3134     0.3247     0.3362     0.3479\n",
      " 0.3598     0.3719     0.3842     0.3967     0.4094     0.4223\n",
      " 0.4354     0.4487     0.4622     0.4759     0.4898     0.5039\n",
      " 0.5182     0.5327     0.5474     0.5623     0.5774     0.5927\n",
      " 0.6082     0.6239     0.6398     0.6559     0.6722     0.6887\n",
      " 0.7054     0.7223     0.7394     0.7567     0.7742     0.7919\n",
      " 0.8098     0.8279     0.8462     0.8647     0.8834     0.9023\n",
      " 0.9214     0.9407     0.9602     0.9799     0.9998    ]\n",
      "[0.33333333 0.20845833 0.13064896 0.0823306  0.05251912 0.03434945\n",
      " 0.02353091 0.01738182 0.01422614 0.01301633 0.01309771 0.01406107\n",
      " 0.01565067 0.01770667 0.02012917 0.02285573 0.02584733 0.02907958\n",
      " 0.03253724 0.03621077 0.04009423 0.0441839  0.04847744 0.0529734\n",
      " 0.05767087 0.0625693  0.06766831 0.07296769 0.07846731 0.08416707\n",
      " 0.09006692 0.09616682 0.10246676 0.10896673 0.1156667  0.12256669\n",
      " 0.12966668 0.13696668 0.14446667 0.15216667 0.16006667 0.16816667\n",
      " 0.17646667 0.18496667 0.19366667 0.20256667 0.21166667 0.22096667\n",
      " 0.23046667 0.24016667 0.25006667 0.26016667 0.27046667 0.28096667\n",
      " 0.29166667 0.30256667 0.31366667 0.32496667 0.33646667 0.34816667\n",
      " 0.36006667 0.37216667 0.38446667 0.39696667 0.40966667 0.42256667\n",
      " 0.43566667 0.44896667 0.46246667 0.47616667 0.49006667 0.50416667\n",
      " 0.51846667 0.53296667 0.54766667 0.56256667 0.57766667 0.59296667\n",
      " 0.60846667 0.62416667 0.64006667 0.65616667 0.67246667 0.68896667\n",
      " 0.70566667 0.72256667 0.73966667 0.75696667 0.77446667 0.79216667\n",
      " 0.81006667 0.82816667 0.84646667 0.86496667 0.88366667 0.90256667\n",
      " 0.92166667 0.94096667 0.96046667 0.98016667 1.00006667]\n"
     ],
     "output_type":"stream"
    }
   ],
   "metadata":{
    "datalore":{
     "type":"CODE",
     "hide_input_from_viewers":false,
     "hide_output_from_viewers":false
    }
   }
  },
  {
   "cell_type":"code",
   "source":[
    "xxx = np.arange(0, 1 + h, h)\n",
    "yyy = []\n",
    "for i in xxx:\n",
    "    yyy.append((math.e ** (-50 * i) \/ 3) + i ** 2)\n",
    "pl.plot(xx, yy, label=\"Euler\")\n",
    "pl.plot(xx_r, yy_r, label=\"E_r\")\n",
    "pl.plot(xx_R_k, yy_R_k, label=\"R_k\")\n",
    "pl.plot(xxx, yyy, label=\"True\", alpha=0.3)\n",
    "pl.legend()"
   ],
   "execution_count":38,
   "outputs":[
    {
     "data":{
      "text\/plain":[
       "<matplotlib.legend.Legend at 0x7f9edcb00220>"
      ],
      "image\/png":[
       "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy\/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAArt0lEQVR4nO3dd3hUZf7+8fcnk14gQAKEGpAOsugGULGgSG8iouCKIihSRRQV1F35qmvBtaGwgIKKBVBwKYKCiqigKKGXCERaQichkJA6mef3RwK\/GIEMZDJnZvJ5XRfXNeXhnPsQvD08p4kxBqWUUt7Pz+oASimlXEMLXSmlfIQWulJK+QgtdKWU8hFa6Eop5SP8rVpxVFSUiY2NtWr1SinlldavX3\/CGBN9vu8sK\/TY2Fji4+OtWr1SSnklEdl\/oe90ykUppXyEFrpSSvkILXSllPIRls2hn09eXh7JyclkZ2dbHcVtgoODqVWrFgEBAVZHUUp5OY8q9OTkZCIiIoiNjUVErI5T5owxpKSkkJycTL169ayOo5TyciVOuYjILBE5JiLbLvC9iMhkEUkUkS0icvXlhsnOzqZKlSrloswBRIQqVaqUq3+RKKXKjjNz6B8AXS7yfVegYeGvocB\/SxOovJT5WeVte5VSZafEQjfG\/AikXmRIb2C2KbAWiBSRGFcFVEopX2G35\/Liq7eybevKMlm+K85yqQkkFXmfXPjZX4jIUBGJF5H448ePu2DVrmez2WjVqtW5Xy+\/\/PJFx3\/wwQeMGjXKTemUUt7szbf7suvUYVb+9EGZLN+tB0WNMTOAGQBxcXEe+WSNkJAQNm3aVGbLt9vt+Pt71LFopZQbfLHwRban7CEmMIxRD71fJutwxR76QaB2kfe1Cj\/zKbGxsZw4cQKA+Ph42rdv\/5cxx48fp2\/fvrRu3ZrWrVuzZs0aACZOnMjAgQNp164dAwcOdGdspZQHSEhYw\/L1HxPuBw8PW4CfzVYm63HFruJiYJSIzAXaAqeMMYdLu9D\/W7KdHYdOlzpcUc1qVODZns0vOiYrK4tWrVqdez9hwgTuuusup5Y\/ZswYxo4dy\/XXX8+BAwfo3LkzCQkJAOzYsYPVq1cTEhJy2fmVUt4nM\/M0780dRr6BO7o+R0zV2iX\/pstUYqGLyBygPRAlIsnAs0AAgDFmGrAM6AYkApnA\/WUV1h1KM+Xy7bffsmPHjnPvT58+TUZGBgC9evXSMleqHHrt7V6k5Du4pv4t3HRd3zJdV4mFbowZUML3BhjpskSFStqTdjd\/f38cDgfABc8bdzgcrF27luDg4L98FxYWVqb5lFKe54MPH+aP9OPEhkUxbPA7Zb4+vZeLk2JjY1m\/fj0ACxYsOO+YTp068fbbb597X5YHV5VSnu3ntQtYvftbKtn8eHTUYresUwu9mLNz6Gd\/jR8\/HoBnn32WMWPGEBcXh+0CBzQmT55MfHw8LVu2pFmzZkybNs2d0ZVSHuL4sQPMWfYvbAKD7pxGhYiKblmvFMyYuF9cXJwp\/oCLhIQEmjZtakkeK5XX7VbKFzny83nm3205nJtF56vvof\/tE1y6fBFZb4yJO993uoeulFIu9OaUfhzKzaJpVGOXl3lJtNCVUspFFi56ia3HdhITEMJjoz53+\/q10JVSygUSEn7iq\/iPCBcY\/dAX2PzL5uKhi9FCV0qpUsrISGXGnOHkG+jX9XlqVK9jSQ4tdKWUKg1jePWtHpx0GK5t3J0br7vdsiha6EopVQpTp9\/H\/qxTXFGhJkMGvmppFi10pZS6TF8vn8K65PVE+Qfw+MOLrI7jWc8U9QQ2m40rr7zy3Pv+\/fufu7hIKaXO2rX7VxaunkKoCMPv\/4TgYOvv1aSFXszl3pwrPz\/\/gleQKqV8S2ZGGtM\/foA8I9x+6wSuqOsZ957y3EL\/ajwc2eraZVa\/Erpe\/AlElyI2Npa77rqLb775hieeeIL+\/fu7bNlKKc81aXIPUvIdXFv\/Vjq1v8fqOOd4bqFb5FLvh16lShU2bNjghmRKKU\/w3+mD2Jd5kvoRMTw0+C2r4\/yJ5xa6C\/ekL8WlTrk4+\/ALpZT3W\/bVZH5LWke0fwCPj1lidZy\/0LNcSknvc65U+ZCQsJrFa6YR5gcjh8wjxAMOghanha6UUiU4ffoEM+YMww7c3vFZYms3tjrSeXnulItFis+hd+nShZdftmb6RyllPUd+Pq9O7s5Jh+GGxj245YY7rY50QVroxeTn5zs9dt++fWUXRCnlEd6acidJ2Rk0ioxlyMBJVse5KJ1yUUqpC\/hs\/kS2HPudmIAQHh+z0Oo4JdI9dCf06dOHvXv3\/umzV155hc6dO1uUSClV1tatW8Q3mz6jgp8fj4xYSEBAgNWRSqSF7oT\/\/e9\/VkdQSrnRwUO7+XDJU\/gJDLx9MtWia1kdySk65aKUUkVk52Ty1ox+nHFAp9YPENfqFqsjOU0LXSmlinj1zW4cs+dxda229O31qNVxLokWulJKFZo2fRB\/pB8nNqwqox6aaXWcS6aFrpRSwKJFr567rP+JsUsREasjXTIt9GJsNhutWrWiRYsW9OzZk7S0tAuOXbVqFT169HBfOKVUmdiwfhnL4t8nTGD0g\/MJDQ61OtJl0UIv5uzNubZt20blypWZMmWK1ZGUUmXoyJE\/eH\/h4xgDA3pOok7NBlZHumwee9riK7+9wu+pv7t0mU0qN+HJNk86Pf7aa69ly5YtTo1dt24dQ4cOZf78+VxxxRWXG1Ep5UbZ2Wd4fVpfMgx0jRvEdW26Wx2pVHQP\/QLy8\/P57rvv6NWrV4ljf\/75Z4YNG8aiRYu0zJXyFsYw6Y0uHLPn0apma+687QmrE5Wax+6hX8qetCudvTnXwYMHadq0KR07drzo+ISEBIYOHcqKFSuoUaOGm1IqpUrr7SkD2HMmlXrh1Rkz\/AOr47iEU3voItJFRHaKSKKI\/OWJySJSR0S+F5GNIrJFRLq5Pqp7nJ1D379\/P8aYEufQY2JiCA4OZuPGjW5KqJQqrc8++ycbjmylakAQT45danUclymx0EXEBkwBugLNgAEi0qzYsGeAz4wxVwH9gamuDupuoaGhTJ48mddeew273X7BcZGRkSxdupQJEyawatUq9wVUSl2WH3\/8mBVbFlDBTxg7fBHBQcFWR3IZZ\/bQ2wCJxpg9xphcYC7Qu9gYA1QofF0ROOS6iNa56qqraNmyJXPmzLnouGrVqvHll18ycuRIfv31VzelU0pdqt2J65j7zYv4Cwy+87\/EVK1tdSSXcmYOvSaQVOR9MtC22JiJwAoRGQ2EAbeeb0EiMhQYClCnTp1LzeoWGRkZf3q\/ZMmFnxvYvn172rdvDxRsz\/bt28symlKqFE6mHmbq7PvJMULfmx7jby1usDqSy7nqLJcBwAfGmFpAN+AjEfnLso0xM4wxccaYuOjoaBetWimlLi43J5tJ7\/TgZL7h+iY96dZxsNWRyoQze+gHgaL\/LqlV+FlRQ4AuAMaYX0QkGIgCjrkipNW2bt3KwIED\/\/RZUFCQTq8o5SUmvdmVw7nZtKjanPvv8d1HSjpT6OuAhiJSj4Ii7w\/cXWzMAaAD8IGINAWCgeOuDGqlK6+8kk2bNlkdQyl1Gd6ZejeJ6ceoGxrFYw\/PszpOmSpxysUYYwdGAcuBBArOZtkuIs+JyNmrbh4DHhSRzcAcYJAxxpRVaKWUcsbceU+z\/tBmqgYEMf7Rr73yhluXwqkLi4wxy4BlxT77V5HXO4B2ro2mlFKX77uVM\/l26\/+oaPNj7PBFhASHWB2pzOml\/0opn7N160o+X\/kagSI8OGCmz52eeCEee+m\/FVJSUujQoQMAR44cwWazcfZsnN9++43AwEAr4ymlnHDocCLvfj6afOCuTs\/SvEnxs6x9lxZ6EVWqVDl38HPixImEh4czbty4c9\/b7Xb8\/fWPTClPlZGRyuvTbyfdUXD3xJtvuNPqSG6l7VSCQYMGnbtXS7t27ahQocKfir5FixZ8+eWXxMbG8vHHHzN58mRyc3Np27YtU6dOxWazWbwFSpUPdnsuL73RmRP2fNrUu8kn7p54qTy20HN27yY\/PaPkgZfAFhFOUMOGl\/z7kpOT+fnnn7HZbEycOPG8YxISEpg3bx5r1qwhICCAESNG8Mknn3DvvfeWMrVSyhmvvNaFgzmZNKnSkBFDvP52UpfFYwvdk\/Tr16\/EPe3vvvuO9evX07p1a6DgNrxVq1Z1Rzylyr233+nP7vSj1AmtwhMPL7A6jmU8ttAvZ0+6rISFhZ177e\/vj8PhOPc+OzsbAGMM9913Hy+99JLb8ylVnn340VjWH95KtcBgJjy6HL9yPM2ppy1eotjYWDZs2ADAhg0b2Lt3LwAdOnRg\/vz5HDtWcLeD1NRU9u\/fb1lOpcqDxUte5cedK6jk78fjo5eVi3PNL0YL\/RL17duX1NRUmjdvzjvvvEOjRo0AaNasGS+88AKdOnWiZcuWdOzYkcOHD1ucVinftXrNXJb8+j6hAqOHfEZU5WpWR7KcWHWFflxcnImPj\/\/TZwkJCTRt2tSSPFYqr9ut1OXavn0V78wdgQEevOMd\/v63W6yO5DYist4YE3e+73QPXSnlVZKStjNt7kjsBm7v8FS5KvOSaKErpbxGauoh3njvLjINdIobTKf291gdyaN4XKGXt5s0lrftVepyZWWl88rb3TmZb7i2YRf63Tau5N9UznhUoQcHB5OSklJuSs4YQ0pKCsHBvvOQWqXKgt2ey4uv3crRvFxaxlzNA\/e9ZnUkj+RR56HXqlWL5ORkjh\/3mWdjlCg4OJhatWpZHUMpj2UcDl5+rTNJ2Rk0iqzH2JEfWR3JY3lUoQcEBFCvXj2rYyilPMjrk\/uce+LQ+LGLrI7j0TxqykUppYr67\/T72HoikeqBYTw1bkW5vgrUGVroSimPNPujsfyWFE+UfyBPjf2GoMAgqyN5PC10pZTHWbDgeVbtXEGkzY8nR39FhYiKVkfyClroSimPsvzrd\/hq4xzC\/YQxD8wnukp1qyN5DS10pZTH+PHHj1mweipBfsKwu2cRW7ux1ZG8iha6UsojxMcv4dMVL2ITGHT7WzRr0sbqSF5HC10pZbkd239g1qInMQL9uz5P61a3Wh3JK2mhK6UstTtxHVPnjSDPQO8bx3HTdX2tjuS1tNCVUpZJTt7BO7PvJ8sB3doOo1vHwVZH8mpa6EopSxw9uo\/XZtxJusNwa6sB9On5sNWRvJ4WulLK7VJTDzJpak9OOQzXN+nBgDuesTqST9BCV0q51enTJ3hpcndS8x20rX8rg+95xepIPkMLXSnlNpkZabz4RkeO2\/P4e512PDT4Lasj+RQtdKWUW2RlpfP86x04UnhP81FDZ1gdyedooSulylxOTiYv\/OcWDudm06LalTyq9zQvE04Vuoh0EZGdIpIoIuMvMOZOEdkhIttF5FPXxlRKeavcnGxeePVmDuZk0iyqMeNGz7U6ks8q8QEXImIDpgAdgWRgnYgsNsbsKDKmITABaGeMOSkiVcsqsFLKe9jzcnjh1fYkZWfQuFI9Hh+zwOpIPs2ZPfQ2QKIxZo8xJheYC\/QuNuZBYIox5iSAMeaYa2MqpbyN3Z7L85Nu5kB2Og0jYxn\/6BJExOpYPs2ZQq8JJBV5n1z4WVGNgEYiskZE1opIl\/MtSESGiki8iMSXp+eGKlXe2O25vDDpZvZnnaJBhdpM0DJ3C1cdFPUHGgLtgQHAuyISWXyQMWaGMSbOGBMXHR3tolUrpTyJ3Z7Lvyfdwr7MNOpH1OSpx5bi56fnX7iDM3\/KB4HaRd7XKvysqGRgsTEmzxizF9hFQcErpcqRs2W+N\/MkV0TU4JlxX+lzQN3ImUJfBzQUkXoiEgj0BxYXG7OQgr1zRCSKgimYPa6LqZTydMXL\/OlxX2uZu1mJhW6MsQOjgOVAAvCZMWa7iDwnIr0Khy0HUkRkB\/A98LgxJqWsQiulPMvZOfO9mSepHxGjZW4RMcZYsuK4uDgTHx9vybqVUq5jz8vh+cIDoFdUqMXTjy3TMi9DIrLeGBN3vu9KPA9dKaUu5OxFQweyT9OgYh09AGoxLXSl1GXJycnk+Vfbk5x9hgYV6\/L0uKV6aqLFtNCVUpcsKyudF\/5zCwdzMmlcqT7jH12sZe4BtNCVUpckMyON51\/vwOHcbJpFNeGJR\/Ryfk+hha6Uctrp0yf49xsdOZqXS4vo5owb85nVkVQRWuhKKaekph7kpcndOJ5np1WNv\/PIyNlWR1LFaKErpUp09Og+Jk3tSWq+g9Z1r2fk0OlWR1LnoYWulLqopKTtvP7eXaTlG66pf6s+Ns6DaaErpS5od+I63p49iDMOuKlpbwb940WrI6mL0EJXSp3Xtm0rmfbZaLIdho6tBtL\/jglWR1Il0EJXSv3F2l+\/YPaXz5BnoPs1I+jTY5TVkZQTtNCVUn+y8vtZzFv5HwD6dZhAp5sHWpxIOUsLXSl1zpdLX2fRL+8RIMI\/erxMu7Y9rY6kLoEWulIKgDlzJ\/DttsWEijCk339p1fJGqyOpS6SFrpTivZlDWbN3DRX9hJGDPqVh\/ZZWR1KXQQtdqXLuzbfvYNPRBKrY\/Hls+BJqVK9jdSR1mbTQlSqnHPl2Xn69M7tOHaF6QAjjH1lBZMXKVsdSpaCFrlQ5lJ19hhf\/04ED2enUDqnMU+O+ISQo2OpYqpS00JUqZ1JTD\/LK2z04mpdLw8hYJoxdrI+M8xFa6EqVI\/v2beat9\/9BWr6hZczVPDryI6sjKRfSQleqnNiy+RtmLHiELAdc37g7QwZOsjqScjEtdKXKgZUrZ\/LZytdwAN3bPsTtPcdYHUmVAS10pXzcZ5\/9kxVbFhAoQv8uz9G+XV+rI6kyooWulA+bNn0Qvyato4KfHw\/ePZMWTdpaHUmVIS10pXyQI9\/OpDe68XvaQaL9Axj70GJqxOgFQ75OC10pH5ORkcrLb3QhOecMtUMq8uTY5YSHRlgdS7mBFrpSPiQ5eQdvvtefE\/Z8GldqwJOPfKHnmJcjWuhK+Yj167\/k\/UVPkumAtvVuZviQd6yOpNxMC10pH\/Dl0jdYsvZdAHroaYnllha6Ul7u3feG8su+NYT6CQN6TKJdm+5WR1IW0UJXykvZ7bm8+kZ3dp46RBWbP6Me+Ix6tRtbHUtZyM+ZQSLSRUR2ikiiiIy\/yLi+ImJEJM51EZVSxaWmHuSfL17LzlOHqB0SycTHf9IyVyXvoYuIDZgCdASSgXUistgYs6PYuAhgDPBrWQRVShXYseMHZswbyal8Q9OoZjw+eq6eyaIA5\/bQ2wCJxpg9xphcYC7Q+zzjngdeAbJdmE8pVcTy5VOY\/OlwMvId3Nz8dp585HMtc3WOM3PoNYGkIu+TgT9dPywiVwO1jTFLReTxCy1IRIYCQwHq1NGr1pS6FO++N5S1+9YQLMKdnSZyyw39rI6kPEypD4qKiB\/wOjCopLHGmBnADIC4uDhT2nUrVR7k5GTynze7szv9GFVs\/gy\/\/1MaxDa3OpbyQM4U+kGgdpH3tQo\/OysCaAGsEhGA6sBiEelljIl3VVClyqPkgwlMfncAx+x51A2N4vFHvtTL+NUFOVPo64CGIlKPgiLvD9x99ktjzCkg6ux7EVkFjNMyV6p0Vq+ew9wVz3PGIVxVszUPD3ufwp0mpc6rxEI3xthFZBSwHLABs4wx20XkOSDeGLO4rEMqVd7M\/uhRftz5Nf4Cva4ZTp8eo6yOpLyAU3PoxphlwLJin\/3rAmPblz6WUuVTbk4Wr03uyc5Th6lkszG4\/wyubHqt1bGUl9ArRZXyEElJ23h75j0cs+dRO6QSj41eQmSFSlbHUl5EC10pD7Dy+5ksWPkaWUa4ulYbRj80S+fL1SXTQlfKSsYwbcb9rEtaR6BA7+tH07vLMKtTKS+lha6URU6lHeX1KX3Yn3WKKP8AHrp3Ng3rt7Q6lvJiWuhKWWDjhmV8uPAJ0hyGBhVq8djDCwkJDrE6lvJyWuhKudknnzzOqoSlCHBL877cO+B5qyMpH+F1hT5j1gh+3\/8TL074jWDdo1FeJDMjjden3EZi+nEi\/fy4u8+btLnqVqtjKR\/idYWelX2a1HwHe\/dtoGmTdlbHUcop27Z+x6z5Y0jNN9QNjWbsqP\/pKYnK5Zx6wIUniaxUD4AD+zZanEQp53zyyeNMnjea9HwH113Rmf97apWWuSoTXreHXrVaM9j+BUeP77I6ilIXlZ6Rwhtv92HPmRQi\/fy4s+ckrmvdzepYyod5XaHXrd8GVsLJk0klD1bKIr\/9tpBPlz5DWr6hblhVHh31BRUjdK9clS2vK\/Q6MXUJADKyUqyOotRfGIeDGTMf5Lf9v2ADbmzSi8H3vGx1LFVOeF2hhwXaCPaDzNx0q6Mo9SeHDycy5b0BJOdkUsUWwL13\/Ze\/NbvO6liqHPG6QhcRAiSQTHuu1VGUOufLpa\/z1dr3yDRCo8j6jB39OSFBwVbHUuWM1xU6QIAtnLS8FDAG9AZGykJZWem8NeUOdqYlE+on9L5mJLd1H2F1LFVOeWehB1YmJzeVM6l7CatS3+o4qpxat24hny55hpMOQ82gCox8YB41YvTh58o6XlnogWE1ICORI0kbuEILXbmZIz+fae\/ex\/rkDdiA667ozIODXtfb3SrLeWWhh1S8Ao7+yOEjO7jC6jCqXNm182dmzh3B0bw8ovwDuffOqbTUA5\/KQ3hloUdWvRJ2waGjf1gdRZUXxvDB7DH8vPtb8hFaVGvJw8NmExgQYHUypc7xykKvEdMUDJxIO2x1FFUO7N+\/hemzh3AoJ5NIm40+XV7gpmt7Wx1Lqb\/wykKvHhlOsB+cykyzOorycR9\/Mo6ffl9GrhEaVarPwyPmEh4SZnUspc7LKws9OjyYAPxJz820OoryUQcObGHGh0NIzsmkop8ffTs8Raf2d1sdS6mL8spCj4oIRCSYjPzTei66ci1jmP3xo6zZtbxgrzwyltHD5xIRFmF1MqVK5JWFHhroj4NwshwZ5GemYAuLsjqS8gGJieuY9ekwDuVmE6l75coLeWWhA5iAaPJzjpB6cDPRjTpYHUd5MUd+Pu\/NGkr8\/l\/IR2hcuQGjh39CeEi41dGUuiReW+gE14KcrRw9tFULXV22DRuWMmfxUxy326ni50\/vrs9x47W3WR1LqcvitYUuEQ3h1FccPZFIC6vDKK+TlZXO1On\/YMeJP\/DD8LfqVzNi6EyCAoOsjqbUZfPaQo+o1JSMZDhxMtnqKMrLfPX1ZL7+eQanHIZqASH8o99kvdpT+QSvLfRqlatzDEhJP2F1FOUlDh7cybsfDmZfZhohYrihcU8G3\/Oy3oNF+QyvLfSqFYIJFD9SszKsjqI8nCPfzsz3hxO\/fw25RogNq8rQ+2dTo3ptq6Mp5VJOFbqIdAHeAmzAe8aYl4t9\/yjwAGAHjgODjTH7XZz1T6LCA\/EjkNN6cZG6iNU\/fszC717hRL6DSjYbt930OF1vudfqWEqViRILXURswBSgI5AMrBORxcaYHUWGbQTijDGZIjIcmATcVRaBz4qOCMIhYaTnZ0JOOgTphR\/q\/ztyOJF3PxjCnjMnCBDDVbWuYdjgaQQFBlodTaky48weehsg0RizB0BE5gK9gXOFboz5vsj4tcA9rgx5PlHhQZwxlfEjhezkjQRfcWNZr1J5AXteDrPeH876pLXkOITaoZW59x\/TaBjb3OpoSpU5Zwq9JpBU5H0y0PYi44cAX5UmlDOiI4I4bGKpyW727V5JEy30cu\/rr99h+S\/TOJlvqGSz0fvGsXTrONjqWEq5jUsPiorIPUAccNMFvh8KDAWoU6d0j+oKDrBx0taCmvnfkJi0gSalWpryZgkJP\/HpgsdIyj5DsBhax7bnoUFv4+9vszqaUm7lTKEfBIqeDlCr8LM\/EZFbgaeBm4wxOedbkDFmBjADIC4uzlxy2mIiwuthOw37U5JKHqx8zsmTB5kx6wF2nTwAQP2Imjxw30w9e0WVW84U+jqgoYjUo6DI+wN\/umORiFwFTAe6GGOOuTzlBURHhBKcEcbBzDTIy4aAYHetWlkoLzebWR+OYNOBtWQZISYwlD49X6LNVbdaHU0pS5VY6MYYu4iMApZTcNriLGPMdhF5Dog3xiwGXgXCgc8LL9I4YIzpVYa5gYJ59LxjURzLzSD\/yBZstduU9SqVlYzhiy+e54fNn3HKYYi02bg17gH69hxjdTKlPIJTc+jGmGXAsmKf\/avIa0t2jaLCA9nkqE8l9pO0eyWxWug+64dV77N01Zscs9sJFbimfgceuPcNnSdXqgivvVIUCvbQ\/8hpTJzte3bv+41YqwMpl9u0cRnzv3yW5JxMAjE0j27OA\/dPp1KFylZHU8rjeHWhx1QM4YyjFn422HuiTC9MVW62e\/evzPl8HPsyUxEKDnje+4+pxNZqYHU0pTyWVxd6k5gIjARSISiU5DOnwJ4L\/noloDc7cGALH815hD3pR3EAtUIq0+\/2\/9Cy6cUufVBKgZcXeoOq4fj7CQHBVTl2OgNzbAdSo5XVsdRlOHRwJ7PnPExiWhJ2I9QIjqB753\/Rrk03q6Mp5TW8utCD\/G00qBrOaXs9csw+jvzxAzFa6F7lyOHdfPjpwySe3E8eQvWAUDre\/CQdbuxndTSlvI5XFzpA05gKbNzdkFi+Z9eeX4i5QU9h8wbJBxP4ZM5Ydp86gN0I1QJCueXGR+h8c5nfBkgpn+UDhR7Bog01iPWHvcf+OP89B5TH2PfHBuZ88QR\/nDqEvXCP\/MbrR9Otw31WR1PK6\/lAoVfAIaFEBAWTdOYU5NvB5vWb5XO2b\/+eLxY\/y74zKeQbqB4Uxi03PUanm\/pbHU0pn+H1zdc0pgIAISFVOXI6Ew5vglpx1oZS56xZM4evv3+Tg9kZGKBGSEU63TKem64t8wuJlSp3vL7Qo8KDqBoRRHpQU7LMAU5smkeUFrqljMPBkiWvsmbTXI7m5WIDaodVpUfXZ2ndqr3V8ZTyWV5f6FCwl550sjlRLGdtwgp6dJ8E+uBft8vKSmfu3CfZvO9H0vINQWJoFFmffn1foWE9fcCEUmXNZwp95h\/ViQ0OZWPGSXoc3wlV9Q7p7pJ8cAfzPh9PYkoiWUYI94NWNVrzjwGvEF2pmtXxlCo3fKTQI8jLh1q1W7M78QfObJ1PWIdnrI7l8376cTbf\/jSN5KxT5ANV\/ANp27AHA\/r9k6DAIKvjKVXu+EShNys8MBpW7RbyE3\/g5y1L6KiFXiayzpxi7udPs23vD6TkO7ABNUIiuaHdSDq1v7vE36+UKjs+Uej1osII9Pcjzd6YEP9ANqSdoGNaEkTqk2tcZduWb1myYhL7TiWTY4QwgWZRTel7+wtcUUent5TyBD5R6P42P5pUj+D3o2doXf\/vbNv1M9nbFhJ8\/Wiro3m1rMzTLPjfc2zZ\/S3H8vIQgeiAYFo06smdfZ8iWKdVlPIoPlHoAE2rV+CbhKMMv60Pm3b9wrrN87lBC\/2y\/PrrAr5dNYUDGUfIMUKIGBpG1qNzxyeIa6XX4irlqXyn0GMimBefRI3q1xFo82fd8WRuyDgO4dFWR\/MKBw8msHDxCyQe2czJfIMAVQNCadqgC3fcPoHwkDCrIyqlSuAzhd6+cVVYsoPl21NpUPdv7Ny7jrw1bxLQ+d9WR\/NYZzJSWbjoJbb9sZKjudk4gAg\/oVlUU3p0e4pmja62OqJS6hL4TKHHRoURV7cSCzYk88zNfdixZz0rf\/uEztc9DBF6LvRZeblZLPvqTTZsW8LhrDRyEYLEUDusKm3j7qNLh\/vw8\/OzOqZS6jL4TKED9P17LSZ8sZWKlW8kKrI6X54+xM0\/\/IfAHq9aHc1S9rwclq+YwvotCzl05gTZCP4YqgaG06RRV\/r0eoKIUJ1SUcrb+VShd28Zw8TF2\/li42F6dx7LzHlPsnjD59xxwyNQsabV8dwqJzuDr5dPZvP2rziUlUK2EWxAVEAoV9W5ntt6jadalepWx1RKuZBPFXqF4AA6Na\/O4s2HeLp7F76uNp1vjyXSddXLhPV+2+p4ZS415QDLvnqTnfvXcCw7nZwiJd6q9rX07P4ENavpuflK+SqfKnSAvlfXZMnmQ3z\/+3H6dX2SNz94iPmbvuS+a0dA1aZWx3O5bVu+YdXqWSQdT+BEXh75QCCGqKAI6te9kR5dH6V6dIzVMZVSbuBzhX5Dw2iqRgSxYEMy7913PQ3qtmT1\/i10\/vhOqj+0CsKqWB2xVE6nHWXFd9P4PfF7jmUc57Qp+DzcD2qFVaVJ46706DJS58SVKod8rtBtfkKfq2oyc\/Vekk9mcnePf\/LS9LuZlJbNs58OoOL9S8Dfe65wzMvJ5KfVH7Fx61KOpO0n1W4nH7ABlfwDaBbZkDZtB3LTNT0RvWWwUuWaGGMsWXFcXJyJj48vk2UnpWbS9a2faFgtnHlDr2XDrm+YPnccMZLNP69sT0jfGR57v\/TcnAxWr\/6ErdtXcOTkHo7bc7CbgqwRfkKVkGjqx95Ap44jqB6lBzWVKm9EZL0x5rxP8fG5PXSA2pVDmXRHS0Z8soFXvv6df\/boTHrPk3yy6Hle2\/o9T+T0J\/C2qR4x\/XLi6C5+Wj2H3ft+4UT6YVLtedgpKPAwP4gJrkSN6lfRrt19tGzS2uK0SilP5pOFDtDtyhgGXRfLzNV7aR1bmS6t+5OWfoKlK\/\/L+J2bufed62jVdwo0uNVtmTJOJrN23Rfs2v0zR07u5WRuBumOgu8EqOAn1AiJokbMVbRtO4BWzdrqNIpSymk+W+gAT3VrysakNB7\/fDP+fkK\/W0ZRvUod5i19iTdPn+bqjx\/ktpoNqHPNQ9C0p8vm1vNzzrB\/909sSfiBA4e2cfz0EU7nZXLaAWcnuIKAigHBVK9Qk9p12nJDu3uoV7OuS9avlCqffHIOvajkk5kM\/mAdu45m0Ll5NSb2ak5EYC6zl77Ab5uWAVDNL4+rAqFxjSbUq9uWyNjroGJtCK0MwZFw9lJ4YyAvC5OVRubpwxw9uoPkwztJPraPo2mHSMtMI92ew6l8Qz7\/f886RCDcP5iIkGpUq96Sln\/rTlzz6wjwt5X59iulfMvF5tCdKnQR6QK8RcHJFe8ZY14u9n0QMBv4O5AC3GWM2XexZbqr0AFy7Q7eW72Hyd\/tRhBubBTF9Q2jaVg5ncS9X7N5y1KOnzp2bnywOAgRQyAOAjA4EPIR8oAc40e2kT8VNhRMmYQIBPkFERwYScWKsdSo2Yq\/texCi3oNsfnp1IlSqvRKVegiYgN2AR2BZGAdMMAYs6PImBFAS2PMMBHpD\/Qxxtx1seW6s9DPOpCSydRVify46ziHTmWf+7xCsD9RIWkEmQOE2PdSwX4AmyMDIRc\/8hADgoD4AQHYbKEEBlYgNKw6lao0oEatK2l5RUsaVKtEcIDudSulyk5pz3JpAyQaY\/YULmwu0BvYUWRMb2Bi4ev5wDsiIsaq+ZwLqFMllJf7tsQYw94TZ1i3L5Wjp3NIycghNbMqxjTE30+w+fkREexPxZAAIkMDiI4IolqFYKpFBFO9YjCB\/no3QqWU53Gm0GsCSUXeJwNtLzTGGGMXkVNAFeBE0UEiMhQYClCnTp3LjFx6IkL96HDqR4dblkEppVzNrbuaxpgZxpg4Y0xcdLQ+SUgppVzJmUI\/CBS9RV+tws\/OO0ZE\/IGKFBwcVUop5SbOFPo6oKGI1BORQKA\/sLjYmMXAfYWv7wBWetr8uVJK+boS59AL58RHAcspOG1xljFmu4g8B8QbYxYDM4GPRCQRSKWg9JVSSrmRU1eKGmOWAcuKffavIq+zgX6ujaaUUupS6Pl3SinlI7TQlVLKR2ihK6WUj7Ds5lwichzYf5m\/PYpiFy2VA7rN5YNuc\/lQmm2ua4w574U8lhV6aYhI\/IXuZeCrdJvLB93m8qGstlmnXJRSykdooSullI\/w1kKfYXUAC+g2lw+6zeVDmWyzV86hK6WU+itv3UNXSilVjBa6Ukr5CI8udBHpIiI7RSRRRMaf5\/sgEZlX+P2vIhJrQUyXcmKbHxWRHSKyRUS+E5G6VuR0pZK2uci4viJiRMTrT3FzZptF5M7Cn\/V2EfnU3RldzYm\/23VE5HsR2Vj497ubFTldRURmicgxEdl2ge9FRCYX\/nlsEZGrS71SY4xH\/qLgzo5\/APWBQGAz0KzYmBHAtMLX\/YF5Vud2wzbfDIQWvh5eHra5cFwE8COwFoizOrcbfs4NgY1ApcL3Va3O7YZtngEML3zdDNhnde5SbvONwNXAtgt83w34ioJnzF8D\/FradXryHvq5Z5kaY3KBs88yLao38GHh6\/lABxERN2Z0tRK32RjzvTEms\/DtWgoeOOLNnPk5AzwPvAJkn+c7b+PMNj8ITDHGnAQwxhxzc0ZXc2abDVCh8HVF4JAb87mcMeZHCm4nfiG9gdmmwFogUkRiSrNOTy708z3LtOaFxhhj7MDZZ5l6K2e2uaghFPwf3puVuM2F\/xStbYxZ6s5gZciZn3MjoJGIrBGRtSLSxW3pyoYz2zwRuEdEkim4Xfdo90SzzKX+914ip+6HrjyPiNwDxAE3WZ2lLImIH\/A6MMjiKO7mT8G0S3sK\/hX2o4hcaYxJszJUGRsAfGCMeU1ErqXgoTktjDEOq4N5C0\/eQy+PzzJ1ZpsRkVuBp4FexpgcN2UrKyVtcwTQAlglIvsomGtc7OUHRp35OScDi40xecaYvcAuCgreWzmzzUOAzwCMMb8AwRTcxMpXOfXf+6Xw5EIvj88yLXGbReQqYDoFZe7t86pQwjYbY04ZY6KMMbHGmFgKjhv0MsbEWxPXJZz5u72Qgr1zRCSKgimYPW7M6GrObPMBoAOAiDSloNCPuzWley0G7i082+Ua4JQx5nCplmj1keASjhJ3o2DP5A\/g6cLPnqPgP2go+IF\/DiQCvwH1rc7shm3+FjgKbCr8tdjqzGW9zcXGrsLLz3Jx8ucsFEw17QC2Av2tzuyGbW4GrKHgDJhNQCerM5dye+cAh4E8Cv7FNQQYBgwr8jOeUvjnsdUVf6\/10n+llPIRnjzlopRS6hJooSullI\/QQldKKR+hha6UUj5CC10ppXyEFrpSSvkILXSllPIR\/w+gyIXP4D8ssQAAAABJRU5ErkJggg==\n"
      ]
     },
     "metadata":{
      "image\/png":{
       
      }
     },
     "output_type":"display_data"
    }
   ],
   "metadata":{
    "datalore":{
     "type":"CODE",
     "hide_input_from_viewers":false,
     "hide_output_from_viewers":false
    }
   }
  }
 ],
 "metadata":{
  "datalore":{
   "version":1,
   "computation_mode":"JUPYTER",
   "package_manager":"pip",
   "base_environment":"default",
   "packages":[
    
   ]
  }
 },
 "nbformat":4,
 "nbformat_minor":4
}